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
只返回最后一个字母...
我也尝试过使用strpos
和substr
,但没有任何效果。
【问题讨论】:
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中复杂的正则表达式的主要内容,如果未能解决你的问题,请参考以下文章