Как я могу разделить HTML в строке с помощью Perl?

Попробуйте

Тем не менее, если у вас возникла проблема с получением реального пути, вы можете попробовать мои ответы. Приведенные выше ответы не помогли мне.

Объяснение : - Этот метод получает URI, а затем проверяет уровень API вашего устройства Android, после чего в соответствии с уровнем API генерируется реальный путь. Код для генерации метода реального пути различается в зависимости от уровня API.

  1. метод для получения реального пути из URI

    @SuppressLint("ObsoleteSdkInt")
    public String getPathFromURI(Uri uri){
        String realPath="";
    // SDK < API11
        if (Build.VERSION.SDK_INT < 11) {
            String[] proj = { MediaStore.Images.Media.DATA };
            @SuppressLint("Recycle") Cursor cursor = getContentResolver().query(uri, proj, null, null, null);
            int column_index = 0;
            String result="";
            if (cursor != null) {
                column_index = cursor.getColumnIndexOrThrow(MediaStore.Images.Media.DATA);
                realPath=cursor.getString(column_index);
            }
        }
        // SDK >= 11 && SDK < 19
        else if (Build.VERSION.SDK_INT < 19){
            String[] proj = { MediaStore.Images.Media.DATA };
            CursorLoader cursorLoader = new CursorLoader(this, uri, proj, null, null, null);
            Cursor cursor = cursorLoader.loadInBackground();
            if(cursor != null){
                int column_index = cursor.getColumnIndexOrThrow(MediaStore.Images.Media.DATA);
                cursor.moveToFirst();
                realPath = cursor.getString(column_index);
            }
        }
        // SDK > 19 (Android 4.4)
        else{
            String wholeID = DocumentsContract.getDocumentId(uri);
            // Split at colon, use second item in the array
            String id = wholeID.split(":")[1];
            String[] column = { MediaStore.Images.Media.DATA };
            // where id is equal to
            String sel = MediaStore.Images.Media._ID + "=?";
            Cursor cursor = getContentResolver().query(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, column, sel, new String[]{ id }, null);
            int columnIndex = 0;
            if (cursor != null) {
                columnIndex = cursor.getColumnIndex(column[0]);
                if (cursor.moveToFirst()) {
                    realPath = cursor.getString(columnIndex);
                }
                cursor.close();
            }
        }
        return realPath;
     }
    
  2. Используйте этот метод следующим образом

    Log.e(TAG, "getRealPathFromURI: "+getPathFromURI(your_selected_uri) );
    

Вывод: -

04-06 12: 39: 46.993 6138-6138 / com.app.qtm E / tag: getRealPathFromURI: / storage / emulated / 0 / Видео / avengers_infinity_war_4k_8k-7680x4320.jpg

10
задан brian d foy 1 July 2009 в 08:13
поделиться

2 ответа

Предполагается, что код является допустимым HTML (без случайных операторов <или>)

$htmlCode =~ s|<.+?>||g;

Если вам нужно удалить только жирные, h1 и br

$htmlCode =~ s#</?(?:b|h1|br)\b.*?>##g

И вы можете рассмотреть HTML :: Strip модуль

21
ответ дан 3 December 2019 в 13:25
поделиться

Из perlfaq9: Как удалить HTML из строки?


Самый правильный способ (хотя и не самый быстрый) - использовать HTML: : Парсер из CPAN. Другой наиболее правильный способ - использовать HTML :: FormatText, который не только удаляет HTML, но и пытается сделать небольшое простое форматирование результирующего простого текста.

Многие пытаются использовать простой подход с использованием регулярных выражений, например s /<.*?>// g, но во многих случаях это терпит неудачу, потому что теги могут продолжаться поверх разрывов строк, они могут содержать угловые скобки в кавычках или HTML-комментарий может присутствовать. Кроме того, люди забывают преобразовывать сущности - например, <.

Вот один «простой» подход, который работает для большинства файлов:

#!/usr/bin/perl -p0777
s/<(?:[^>'"]*|(['"]).*?\1)*>//gs

Если вам нужно более полное решение, см. 3-этапную программу striphtml в http://www.cpan.org/authors/id/T/TO/TOMC/scripts/striphtml.gz .

Вот несколько сложных случаев, о которых вам следует подумать при выборе решения :

<IMG SRC = "foo.gif" ALT = "A > B">

<IMG SRC = "foo.gif"
 ALT = "A > B">

<!-- <A comment> -->

<script>if (a<b && a>c)</script>

<# Just data #>

<![INCLUDE CDATA [ >>>>>>>>>>>> ]]>

Если HTML-комментарии включают другие теги, эти решения также будут разбиты на текст, например:

<!-- This section commented out.
    <B>You can't see me!</B>
-->
14
ответ дан 3 December 2019 в 13:25
поделиться
Другие вопросы по тегам:

Похожие вопросы: