cWhats我想要的是删除public function getotherclothdetail($id)
{
$qry1 = "SELECT rentprice from cloth_table where id = '$id' ";
$result2 = $this->fetch($qry1);
$qry = "SELECT cloth_table.*, user_table.email from cloth_table, user_table WHERE cloth_table.owner_id = user_table.id And cloth_table.price = $result2[0]['rentprice'] ";
$result = $this->fetch($qry);
return $result;
}
标记之间的所有空格并保留<abc>
标记之间的空格
<efg>
我想要输出:
<abc>this is between abc</abc><efg>this is between efg</efg>
<efg>this is between efg</efg><abc>this is between abc</abc>
<abc>thisisbetweenabc</abc><efg>this is between efg</efg>
<efg>this is between efg</efg><abc>thisisbetweenabc</abc>
它不适合我
答案 0 :(得分:0)
我建议您使用XML parser !!! 无论如何,如果 a limited, known set of HTML ,您可以使用以下正则表达式(按照我原来的评论)。
注意:此解决方案仅适用于 有限,已知 HTML集< STRONG>。如果您输入的内容与您在问题中发布的内容不同,则此解决方案很可能无效。请参阅Pshemo在您问题下方的评论。
注2 :OP改变了输入的格式,因此原来的答案将不再有效。请参阅下面的原始输入(正是为什么我把一个有限的,已知的 HTML集)。在代码部分中,我添加了第二个正则表达式,它适用于OP新添加的输入。
(?:^(<abc>)|\G(?!^))(\S+)[ \t]*
替换为$1$2
使用新的输入格式,可以使用以下正则表达式(as seen in use here):
(?:^(<abc>)|\G(?!^))([^\s<]+)[ \t]*
<abc>this is between abc</abc>
<efg>this is between efg</efg>
<abc>this is between abc</abc>
<efg>this is between efg</efg>
<abc>thisisbetweenabc</abc>
<efg>this is between efg</efg>
<abc>thisisbetweenabc</abc>
<efg>this is between efg</efg>
(?:^(<abc>)|\G(?!^))
匹配以下任一项
^(<abc>)
符合以下条件
^
在行首处断言位置(<abc>)
将<abc>
字面上捕获到捕获组1 \G(?!^)
在上一场比赛结束时断言位置(\S+)
将任何非空白字符捕获一次或多次到捕获组2 [ \t]*
多次匹配空格或制表符答案 1 :(得分:0)
简单就行
xml = my overall string with <abc> and </abc> stuff
start = xml.indexOf('<abc>')
end = xml.indexOf('</abc>')
totalCharsToInclude = end - start (get the length to run from start)
abcOnly = xml.subString(start, totalCharsToInclude),
abcOnly = abcOnly.replace(" ", "")
这是所有pseduo代码,但您可以轻松模仿它。您可能还需要使用加号或减号来调整索引,我不在您的代码前面进行测试,但您应该能够从中获得所需的内容。
免责声明:使用XML解析器是更好的方法来处理这个,然后操纵字符串,但我会假设你有你的理由,所以我会回答你问的问题,而不是告诉你去获取XML解析器大声笑。祝你好运。