php
  • regex
  • preg-replace
  • 2013-06-23 3 views 0 likes 
    0

    У меня есть входные метки, как это:регулярного выражения для замены входных тегов

    <input style="font-size:12px;width:100%" type="text" value="http://www.google.de/ggg"> 
    

    И хочу, чтобы заменить их ничем. Это то, что я пробовал:

    $pattern = '/<input style="font-size:12px;width:100%" type="text" value="(.+?)">/'; 
         echo preg_replace($pattern, "", $content) 
    

    мне не удалось с этим.

    Какая ошибка в моей функции? Может быть, регулярное выражение?

    Функция, которая заменяет все входные теги внутри строки, будет прекрасной.

    +0

    это может быть хорошей идеей, чтобы сделать регулярное выражение более общего, то есть. удаление всего входного текста из '$ content', или что вы хотели бы сделать с' $ content'? –

    +0

    Вы пытаетесь разобрать/изменить страницу html? Это регулярное выражение кажется прекрасным, проверено на переменной $ content внутри php-скрипта ... – sinisake

    +0

    @mpapec Пожалуйста, посмотрите мое редактирование. Замена всех входных тегов внутри строки будет прекрасной. – user998163

    ответ

    0

    Заменяет все теги input, начинаются ли они с пробелов. /i игнорирует регистр и /x игнорирует пробелы в регулярном выражении, так что основной целью является более читаемым регулярное выражение,

    echo preg_replace("/<\s* input [^>]+ >/xi", "", $content); 
    
    0

    Возможно, вам понадобится pattern modifiers Я предполагаю, что у вас есть блок текста, поэтому попробуйте добавить sU после вашего шаблона.

    +0

    Будьте осторожны с модификатором/U, потому что, если все жадные кванторы становятся ленивыми, ленивые кванторы становятся жадными , то '' (. +?) ">' будет соответствовать первой двойной кавычке до последней двойной кавычки строки (или строки с s-модификатором) –

    0

    Использование объектов DOM, как правило, лучше для обработки HTML, чем регулярное выражение.

    $content = '<input style="font-size:12px;width:100%" type="text" value="asd"/>' ; 
    
    $dom = new DOMDocument ; 
    $dom->loadHTML($content); 
    
    $node = $dom->getElementsByTagName("input")->item(0); 
    $node->setAttribute("value", ""); 
    echo $dom->saveHTML() ; 
    

    Это также может объяснить, почему: RegEx match open tags except XHTML self-contained tags

     Смежные вопросы

    • Нет связанных вопросов^_^