我想做的事情相当简单,但我无法理解。
我希望扫描一大堆文本,查找>>1234
的任何内容并替换为<a href="1234">>>1234</a>
虽然我可以做部分,但我无法想到这样做的方法。编写正则表达式很容易找到>>1234
的实例,但它对其余部分无法帮助我。这实际上可以通过两种方式完成,客户端按原样提供文本,然后使用javascript格式化,或者服务器每次处理文本并吐出格式化版本。
这是github页面:https://github.com/4tran/VIB
这是我尝试过的一种正则表达式的例子:
<?php
function formatLink($post) {
if(preg_match('/^\>\>([0-9]+)$/', $post)) {
echo $post;
}
}
formatLink(">>10"); // returns ">>10"
formatLink("spaghetti"); // returns ""
formatLink(">>10 spaghetti"); // returns ""
?>
任何帮助都会非常感激,我真的被困在这里。
编辑:我想出了一些东西。 好的,对于任何想要帮助的人,我现在对我想做的事情有一个非常好的参考。我在第一部分之前找到了第二部分,第二部分是文本引用。这是代码:$re = "/^^(>[a-zA-Z0-9_ ]*$)/mi";
$subst = "<p class=\"quote\">$1</p>";
foreach ($boards as $x) {
$x = $db->real_escape_string($x);
$db->real_query("SELECT * FROM posts_".$x." ORDER BY timestamp DESC LIMIT 1");
$res = $db->use_result();
while ($row = $res->fetch_assoc()) {
$str = str_replace("\r\n", "\n", $row['content']);
$str = str_replace("\r", "\n", $str);
$content = preg_replace($re, $subst, $str);
echo "<p style=\"font-size:110%;\">/$x/ - </p>" . "<p>" . nl2br($content) . "<a href=\"" . "$x/" . $row['op'] . "\"> [reply]</a></p><br/>";
}
}
最终编辑:我现在也得到了第一部分。
答案 0 :(得分:0)
没有结束锚$
,剩下的文本打破了。量词将找到所有附加数字。 (如果在字符串中的任何位置允许^
,你也可以取消前导锚>>number
,在两个例子中它都是领先的所以我认为这是不变的?)。
尝试:
^(>>\d+)
演示:https://regex101.com/r/kC1bM7/2
如果您在HTML >
中使用>
,则还应将preg_replace('/^>>(\d+)/', '>>$1', $string);
编码为其实体。
PHP用法我会使用类似的东西:
public PdfResult GetPdf(int databaseRecordId)
{
var dbRecord = your code to return the sql record.
return PdfResult(dbRecord.PdfBytes, "whatever name you want to show");
}
public class PdfResult : FileResult
{
private const String DefaultFileName = "file.pdf";
private readonly Byte[] _byteArray;
public PdfResult(Byte[] byteArray, String fileName = DefaultFileName)
: base(MediaTypeNames.Application.Pdf)
{
_byteArray = byteArray;
FileDownloadName = fileName;
}
protected override void WriteFile(HttpResponseBase response) { response.BinaryWrite(_byteArray); }
}
也不是大于符号在正则表达式中没有特殊含义所以它不需要被转义。