unexpected '@' in preg_replace???
| From: | Zoltán Németh | Date: | Mon, 29 Oct 2007 14:44:55 +0000 |
| Subject: | unexpected '@' in preg_replace??? | ||
| Groups: | php.general | ||
| Request: | Send a blank email to php-general+get-263783@lists.php.net to get a copy of this message | ||
hi list,
I have this code:
<?php
$mit = array(
"/\r/", // Non-legal carriage
return
"/[\n\t]+/", // Newlines and tabs
'/[ ]{2,}/', // Runs of spaces,
pre-handling
'/<script[^>]*>.*?<\/script>/i', // <script>s --
which
strip_tags supposedly has problems with
'/<style[^>]*>.*?<\/style>/i', // <style>s --
which
strip_tags supposedly has problems with
'/<h[123][^>]*>(.*?)<\/h[123]>/ie', // H1 - H3
'/<h[456][^>]*>(.*?)<\/h[456]>/ie', // H4 - H6
'/<p[^>]*>/i', // <P>
'/<br[^>]*>/i', // <br>
'/<b[^>]*>(.*?)<\/b>/ie', // <b>
'/<strong[^>]*>(.*?)<\/strong>/ie', // <strong>
'/<i[^>]*>(.*?)<\/i>/i', // <i>
'/<em[^>]*>(.*?)<\/em>/i', // <em>
'/(<ul[^>]*>|<\/ul>)/i', // <ul> and
</ul>
'/(<ol[^>]*>|<\/ol>)/i', // <ol> and
</ol>
'/<li[^>]*>(.*?)<\/li>/i', // <li> and
</li>
'/<li[^>]*>/i', // <li>
'/<a [^>]*href="([^"]+)"[^>]*>(.*?)<\/a>/ie',
// <a href="">
'/<hr[^>]*>/i', // <hr>
'/(<table[^>]*>|<\/table>)/i', // <table> and
</table>
'/(<tr[^>]*>|<\/tr>)/i', // <tr> and
</tr>
'/<td[^>]*>(.*?)<\/td>/i', // <td> and
</td>
'/<th[^>]*>(.*?)<\/th>/ie', // <th> and
</th>
'/&(nbsp|#160);/i', // Non-breaking space
'/&(quot|rdquo|ldquo|#8220|#8221|#147|#148);/i',
// Double quotes
'/&(apos|rsquo|lsquo|#8216|#8217);/i', // Single quotes
'/>/i', // Greater-than
'/</i', // Less-than
'/&(amp|#38);/i', // Ampersand
'/&(copy|#169);/i', // Copyright
'/&(trade|#8482|#153);/i', // Trademark
'/&(reg|#174);/i', // Registered
'/&(mdash|#151|#8212);/i', // mdash
'/&(ndash|minus|#8211|#8722);/i', // ndash
'/&(bull|#149|#8226);/i', // Bullet
'/&(pound|#163);/i', // Pound sign
'/&(euro|#8364);/i', // Euro sign
'/&[^&;]+;/i', // Unknown/unhandled
entities
'/[ ]{2,}/' // Runs of spaces,
post-handling
);
$mire = array(
'', // Non-legal carriage
return
' ', // Newlines and tabs
' ', // Runs of spaces,
pre-handling
'', // <script>s -- which
strip_tags supposedly has problems with
'', // <style>s -- which
strip_tags supposedly has problems with
"strtoupper(\"\n\n\\1\n\n\")", // H1 - H3
"ucwords(\"\n\n\\1\n\n\")", // H4 - H6
"\n\n\t", // <P>
"\n", // <br>
'_\\1_', // <b>
'_\\1_', // <strong>
'_\\1_', // <i>
'_\\1_', // <em>
"\n\n", // <ul> and </ul>
"\n\n", // <ol> and </ol>
"\t* \\1\n", // <li> and </li>
"\n\t* ", // <li>
'$this->_build_link_list("\\1", "\\2")',
// <a href="">
"\n-------------------------\n", // <hr>
"\n\n", // <table> and </table>
"\n", // <tr> and </tr>
"\t\t\\1\n", // <td> and </td>
"strtoupper(\"\t\t\\1\n\")", // <th> and </th>
' ', // Non-breaking space
'"', // Double quotes
"'", // Single quotes
'>',
'<',
'&',
'(c)',
'(tm)',
'(R)',
'--',
'-',
'*',
'£',
'EUR', // Euro sign. € ?
'', // Unknown/unhandled
entities
' ' // Runs of spaces,
post-handling
);
$dokumentum = <<<EOF
<p>zoltan.<strong>nemeth@moveonerelo.com</strong></p><p><strong>zoltan.n<em>emeth@mov</em></strong><em>eonerelo.com</em></p><p><em>zoltan.nemeth@mov</em>eonerelo.com</p><p>zoltan.nemeth@moveonerelo.com </p>
EOF;
$szoveg = preg_replace ($mit, $mire, $dokumentum);
echo $szoveg;
?>
And it throws the following error:
Parse error: syntax error, unexpected '@'
in /home/znemeth/public_html/test/pregreplacetest1.php(94) : regexp code
on line 1
Fatal error: preg_replace() [<a
href='function.preg-replace'>function.preg-replace</a>]: Failed
evaluating code: _nemeth@moveonerelo.com_
in /home/znemeth/public_html/test/pregreplacetest1.php on line 94
it appears both on
PHP Version 4.4.7-0.dotdeb.0
and
PHP Version 5.2.4-0.dotdeb.0
does anybody know what's this? why can a '@' in the subject text cause
any problems?
any help greatly appreciated
thanks in advance
Zoltán Németh