2010-08-17 11 views
2

У меня снова возникла проблема с preg_replace снова. Я страшно нужна книга для preg_replacepreg_replace() с несколькими линиями

мое намерение состоит в замене <td> author </td> с <td> Level1 </td>

Любые идеи? <td> author </td> обернута с другой HTML элемент

<td align="center"> 
    <a onclick="return listItemTask('cb1','block')" href="javascript:void(0);"> 
    <img width="16" height="16" border="0" alt="Blocked" src="images/tick.png"> 
    </a> 
</td> 
<td> 
    Author 
</td> 
+2

Я не удивлен, что у вас снова проблемы. Использование регулярных выражений для синтаксического анализа HTML - это * запрос * для проблемы. –

+7

Каждый раз, когда в одном и том же предложении упоминаются «регулярное выражение» и «HTML», кто-то поднимается об этом. Дело в том, что вам нужно понять разницу между разбором HTML и поиском текста, который является HTML. IMO, это правильное использование регулярных выражений; Функциональность, требуемую для этого вопроса, может быть легко достигнута при любом поиске на основе регулярных выражений и замене в текстовом редакторе. –

+0

@Ryan Kinal: Обычно я соглашаюсь с вами, но в этом случае, если разбор не требуется, достаточно простой замены строки. И если требуется синтаксический анализ, регулярные выражения не будут обрабатывать все случаи. –

ответ

2

От Perl regular expression manual page: (или) PHP PCRE docs

Модификаторы

Соответствующие операции могут иметь различные модификаторы . Модификаторы, которые относятся к , интерпретируют регулярное выражение внутри, перечисленные ниже.

  • s: Обработка строки как одна строка. То есть, измените "." чтобы соответствовать любому символу вообще, даже новой строке, которая обычно не совпала.
+0

Поскольку это PHP, почему бы не процитировать [PHP doc] (http://www.php.net/manual/en/reference.pcre.pattern.modifiers.php)? – kennytm

+0

@KennyTM: Потому что я искал 'preg_replace' и синтаксис там не описан. AFAIK, PCRE должен быть полностью совместим с регулярным выражением Perl. Я включу ссылку в свой ответ. – jpalecek

0

Маленький код никогда не помешает ...

<?php 
$string = ' 
<td align="center"> 
    <a onclick="return listItemTask(\'cb1\',\'block\')" href="javascript:void(0);"> 
    <img width="16" height="16" border="0" alt="Blocked" src="images/tick.png"> 
    </a> 
</td> 
<td> 
    Author 
</td>'; 

$string = preg_replace("/<td>.*Author.*<\/td>/s", "teste", $string); 

echo $string; 

?> 

ли замечаете \s modifier используется, чтобы позволить . соответствовать newlines.

+0

@tweakmy Я действительно не мог сказать по вашему комментарию, если это то, что вы искали, или если вы просто играете (http://www.urbandictionary.com/define.php?term=bow%20head " определение для головы лука »), но если это то, что вы ищете, вы должны нажать« V »рядом с вопросом (принять его). Это даст нам за это честь! Добро пожаловать в StackOverflow (SO)! – Frankie

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