PHP中复杂的正则表达式

Posted

技术标签:

【中文标题】PHP中复杂的正则表达式【英文标题】:Complicated regex in PHP 【发布时间】:2015-02-05 07:18:25 【问题描述】:

我需要制作一个正则表达式和/或 php 代码来替换这样的文本:

Hello|Hi sir.
How are you?|How are you doing?

进入:

<select id="q1">
    <option value="hello">Hello</option>
    <option value="hi">Hi</option>
</select>
sir.
<select id="q2">
    <option value="how_are_you">How are you?</option>
    <option value="how_are_you_doing">How are you doing?</option>
</select>

而“值”是用_替换空格并删除符号的文本。

编辑:对不起,我忘记了一些信息。 我已经有一个有效的正则表达式:

([a-zA-Zàâçéèêëîïôûùüÿñæœ\-\|]2,)

但是为了替换所有的东西,$1 只返回最后一个字母... 我也尝试过使用strpossubstr,但没有任何效果。

【问题讨论】:

OP,我们可以先看看初步尝试吗?我认为这可能是投反对票的原因。 如果它被打开,我有一个答案...... 您不需要正则表达式。显示你试过的,这个问题可能会被重新打开,我可以告诉你如何使用php函数来做 我已经编辑了问题,添加了我尝试过的内容。 不仅仅是正则表达式,而是你的整个尝试 【参考方案1】:

试试这个:

<?php
$q1 = "Hello|Hi sir.";
$q2 = "How are you?|How are you doing?";

$q = substr($q1, 1, strpos($q1,'')-1);
$q_end = substr($q1, strpos($q1, '')+2);
$parts = explode('|',$q);

echo "<select name=\"q1\">\n";
foreach($parts as $part)
    echo "\t<option value=\"".strtolower($part)."\">$part</option>\n";

echo "</select>\n";
echo $q_end . "\n";

$q = substr($q2, 1, strpos($q2, '')-1);
$parts = explode('|',$q);

echo "<select name=\"q2\">\n";
foreach($parts as $part)
    echo "\t<option value=\"".strtolower(substr(str_replace(' ','_',$part),0,strlen($part)-1))."\">$part</option>\n";

echo '</select>';

输出:

<select name="q1">
    <option value="hello">Hello</option>
    <option value="hi">Hi</option>
</select>
sir.
<select name="q2">
    <option value="how_are_you">How are you?</option>
    <option value="how_are_you_doing">How are you doing?</option>
</select>

当然,这取决于您提出问题的方式和地点,以及您必须相应地解决问题的格式。但这为您提供了一个起点和如何进行的想法

【讨论】:

以上是关于PHP中复杂的正则表达式的主要内容,如果未能解决你的问题,请参考以下文章

10个常用的PHP正则表达式

PHP整理笔记八正则表达式

PHP正则表达式

站点安全正则表达式处理程序? (PHP) [关闭]

PHP正则表达式匹配网页里的音标,会的进来帮忙搞定

7.正则RE