小编Dam*_*ien的帖子

解析HTML以修复微型图和字形问题

我对网络上的微型印刷问题很感兴趣.

我想要一个工具来修复:

  • 行情
    • "(“)打开报价(而不是")
    • "(”)结束报价(而不是")
  • 撇号
    • '(’)撇号(而不是')
  • 破折号和连字号
    • - (–或–)短划线,用于范围,例如"11月13日至15日"(而不是 - )
    • - (—或—)em dash,用于改变思想,例如"星球大战 - 每个人都知道 - 太棒了."(而不是 - ,或 - )
  • 省略
    • ...(…或…)水平省略号,用于表示遗漏或暂停(而不是......)
  • 更多\ o /

所有这些修复都取决于内容语言.在法国,例如,我们必须在每个组成的字形(前加insecable(非中断)的空间:,;,,?,!,...),而我们的报价是«这样».

这种工具有许多限制:

  • 它不能编辑受保护标签内的任何HTML(pre,code...)
  • 它必须快(用于CMS输出)
  • 它不能破坏HTML
  • 等等.

市场上已经有一些工具:

它们或多或少都基于SmartyPants,一个2005 lib,未经过测试,没有记录,手动解析HTML而不处理除英语之外的其他规则.一定不行.

所以我的问题是:

  • 你知道这样的任何像样的工具吗?
  • 我该怎么做?我已经有了使用DomCrawler的POC,但我不相信.在PHP中解析和编辑HTML的最佳方法是什么?

编辑2013年7月:我从我在这个问题上获得的测试和专业知识开发了JoliTypo.没有现有的lib正在做我想做的事情.

php localization typography html-parsing

20
推荐指数
1
解决办法
768
查看次数

如何使用Doctrine2处理复合密钥实体的关联?

假设我有一个可以有1-n范围的优惠.你立刻想到,"把一个offer_id放在Range中".

但我的Offer有一个复合主键(由两个字段组成).没有AUTOINCREMENT id列.

Doctrine2文档没有说明这个特定情况,这是我的实体:

<?php
use Doctrine\ORM\Mapping as ORM;
/**
 * @ORM\Table()
 * @ORM\Entity
 */
class Offer
{
    /**
     * @var Site $site
     * @ORM\Id
     * @ORM\ManyToOne(targetEntity="Site")
     * @ORM\JoinColumn(name="site_id", referencedColumnName="id")
     */
        private $site;

    /**
     * @var string $pouet
     * @ORM\Id
     * @ORM\Column(name="pouet", type="string", length=255)
     */
    private $pouet;
}

<?php
use Doctrine\ORM\Mapping as ORM;

/**
 * @ORM\Table(name="RangeItem")
 * @ORM\Entity
 */
class Range
{
    /**
     * @todo This is test code only do not push me :-)
     * @var ArrayCollection
     * @ORM\ManyToOne(targetEntity="Offer") …
Run Code Online (Sandbox Code Playgroud)

symfony doctrine-orm

7
推荐指数
2
解决办法
1万
查看次数

从Symfony自动生成REST API文档

有没有一种简单的方法可以直接从Symfony项目生成REST API的文档?

api rest documentation-generation symfony

6
推荐指数
1
解决办法
1万
查看次数

使用symfony2通过休息进行身份验证

我是symfony2的新手,我正在尝试通过rest api连接FOSUserBundle.Web浏览器身份验证工作正常,我可以使用FOSUserBundle创建用户.实际上我想用Symfony构建一个Web服务.如何连接用户休息?是否容易使用symfony2休息?

谢谢.

rest web-services symfony

6
推荐指数
1
解决办法
3470
查看次数

将多个匹配正则表达式合并为一个并获得匹配的正则表达式

我有一个正则表达式列表:

suresnes|suresne|surenes|surene
pommier|pommiers
^musique$
^(faq|aide)$
^(file )?loss( )?less$
paris
faq                              <<< this match twice
Run Code Online (Sandbox Code Playgroud)

我的用例是每个获得匹配的模式都会显示一个指向我的用户的链接,因此我可以进行多种模式匹配.

我测试了一个简单的文本字符串"生活在巴黎"/"常见问题"/"pom"...

这样做的简单方法是使用a遍历所有模式preg_match,但是我会在性能关键页面上做很多事情,所以这对我来说很糟糕.

这是我尝试过的:将所有thoses表达式组合成一个组名:

preg_match("@(?P<group1>^(faq|aide|todo|paris)$)|(?P<group2>(paris)$)@im", "paris", $groups);
Run Code Online (Sandbox Code Playgroud)

如您所见,每个模式都被分组:(?P<GROUPNAME>PATTERN)它们都由管道分隔|.

结果不是我所期望的,因为只返回第一个组匹配.看起来当匹配发生时,解析停止.

我想要的是所有匹配组的列表.preg_match_all也没有帮助.

谢谢!

php regex preg-match

4
推荐指数
1
解决办法
4319
查看次数

使用Twig从for循环中的键引用数组

在Twig中,我试图使用固定长度的for循环迭代一个可能不完整的数组,这样我就可以显示哪些值是空的.

在PHP中,这将简化为:

for($i =0; $i <= $limit; $i++) {
    if($data[$i]) {
        echo $data[$i];
    }
)
Run Code Online (Sandbox Code Playgroud)

唯一的事情是,在Twig中,我在使用循环的键(索引)来引用数组中的值时遇到问题,这是我尝试过并期望工作的,但不是:

{% for i in range(0, limit-1) %}
    {{ data.i }}
{% endfor %}
Run Code Online (Sandbox Code Playgroud)

我显然可以array_pad()用来在我的控制器中填充我的阵列,但肯定有办法在树枝上做这个吗?

php symfony twig

1
推荐指数
1
解决办法
3696
查看次数